
mousemove 事件常用於一些小遊戲,因滑鼠移動到指定元素後就會出現效果。
馬利歐如果碰到烏龜就會死掉,或是撞擊磚塊會有蘑菇或是無敵星星。
寫一個方塊,滑鼠移動到方塊時,會跳出 alert 視窗。
<div class="box"></div>
.box {
  width: 300px;
  height: 300px;
  background-color: #333;
}
這很簡單,就不贅述。
mousemove 是 JS 另一個控制滑鼠的屬性,先綁定 .box,並新增一個監聽事件,在監聽事件中,寫入相關語法。
var box = document.querySelector(".box");
box.addEventListener("mousemove", touch, false);
function touch() {
  alert("滑鼠碰到我了");
}
codepen 試效果 https://codepen.io/hnzxewqw/pen/wvadwMQ
遊戲任務,滑鼠不可碰到持續上下移動的六個方塊,不然就輸了!
所以有幾個條件:
那就來建立六個方塊:
  <div class="box box1"></div>
  <div class="box box2"></div>
  <div class="box box3"></div>
  <div class="box box4"></div>
  <div class="box box5"></div>
  <div class="box box6"></div>
因控制 .box 內容皆相同,只有 .box1~6 為做動畫而分開撰寫。
.box {
  width: 20px;
  height: 20px;
  background-color: firebrick;
  position: absolute;
  /* 為了讓方塊可以都先置頂,等等跑動畫才會有動態 */
}
為了製作這次的遊戲關卡,使用 animation 屬性,@keyframes "變數名稱",
@keyframes boxmove {
  0% {
    top: 0px;
  }
  50% {
    top: 300px;
  }
  100% {
    top: 0px;
  }
}
.box1 到 .box6 內容設定相同,只有在秒數的內容不同,from 表示起始,也可以用 0% 表示,to 表示結束,也可以用 100% 表示,因為數值範圍是 0%~100%,所以超過這個範圍的都是錯誤的。
.box1 {
  top: 0;
  /* 使方塊置頂 */
  left: 100px;
  animation: boxmove 5s infinite;
}
參考文章 https://www.oxxostudio.tw/articles/201803/css-animation.html
因為總共有 6 個,使用迴圈套進 box 變數中選取的 .box,去監聽滑鼠事件,只要滑鼠碰到方塊,就會執行 touch 函式。
var box = document.querySelectorAll(".box");
var boxLen = box.length;
console.log(box);
for (let i = 0; i < boxLen; i++) {
  box[i].addEventListener("mousemove", touch, false);
  function touch() {
    alert("滑鼠碰到我了");
  }
}
完整程式碼可以看 codepen: https://codepen.io/hnzxewqw/pen/LYVyEEP